/* SERVICE BLOCKS V3 - Standalone / No Bootstrap, Unify or jQuery
   Advanced Settings String: CSS custom properties, separated by semicolons.
   Defaults to the full width of the containing pane, with matching header/rows/footer edges.
   Set --sbv3-content-width:1170px to constrain ALL module sections together.
   Set --sbv3-background-width:100vw ONLY when you deliberately want a full-bleed background.
*/
.service-blocks-v3 {--sbv3-content-width:100%;--sbv3-section-width:100%;--sbv3-background-width:100%;--sbv3-gap:0px;--sbv3-image-width:50%;--sbv3-row-min-height:0px;--sbv3-section-bg:transparent;--sbv3-copy-bg:transparent;--sbv3-title-color:inherit;--sbv3-text-color:inherit;--sbv3-accent:#2174a8;--sbv3-section-padding:0px;--sbv3-copy-padding-x:0px;--sbv3-copy-padding-y:40px;--sbv3-copy-image-gap:48px;--sbv3-copy-max-width:100%;--sbv3-copy-align:justify;--sbv3-image-position:center;--sbv3-image-radius:0px;--sbv3-row-radius:0px;--sbv3-row-gap:0px;--sbv3-title-size:clamp(26px,2.7vw,40px);--sbv3-text-size:inherit;--sbv3-button-radius:6px;--sbv3-mobile-padding:16px;--sbv3-mobile-padding-x:0px;--sbv3-mobile-breakpoint-note:1000px;--sbv3-image-fit:cover;color:var(--sbv3-text-color);position:relative;isolation:isolate;}
/* Background follows the module width by default; 100vw is an optional full-bleed override. */
.service-blocks-v3::before {content:"";position:absolute;z-index:-1;top:0;bottom:0;left:50%;width:var(--sbv3-background-width);max-width:none;transform:translateX(-50%);background:var(--sbv3-section-bg);pointer-events:none;}
.service-blocks-v3,.service-blocks-v3 * {box-sizing:border-box}
.service-blocks-v3 .service-blocks-row {width:100%;max-width:var(--sbv3-section-width);margin:0 auto;padding:var(--sbv3-section-padding) 0;background:transparent;}
.service-blocks-v3 .service-blocks-3-inner {display:flex;align-items:stretch;flex-wrap:nowrap;width:100%;max-width:var(--sbv3-content-width);margin:0 auto;min-height:max(var(--sbv3-row-min-height),var(--sbv3-min-height,0px));gap:var(--sbv3-gap);overflow:hidden;border-radius:var(--sbv3-row-radius);}
.service-blocks-v3 .service-blocks-row + .service-blocks-row {margin-top:var(--sbv3-row-gap)}
.service-blocks-v3 .service-blocks-3-photo {display:none;flex:0 0 var(--sbv3-image-width);min-width:0;background-repeat:no-repeat;background-size:var(--sbv3-image-fit);background-position:var(--sbv3-image-position);border-radius:var(--sbv3-image-radius);}
.service-blocks-v3 .service-blocks-3-photoleftleft,.service-blocks-v3 .service-blocks-3-photorightright.service-blocks-3-photo {display:block;}
.service-blocks-v3 .service-blocks-3-1-coltext {display:flex;flex:1 1 0;min-width:0;align-items:center;background:var(--sbv3-copy-bg);}
.service-blocks-v3 .service-blocks-3-copywrap {width:100%;max-width:var(--sbv3-copy-max-width);margin:0;padding:var(--sbv3-copy-padding,var(--sbv3-copy-padding-y) var(--sbv3-copy-padding-x));text-align:var(--sbv3-copy-align);font-size:var(--sbv3-text-size);overflow-wrap:anywhere;}
/* Padding ONLY at the inside image boundary. The outside edges remain flush.
   Photo on right -> text on left -> right padding.
   Photo on left -> text on right -> left padding.
   The separate --sbv3-copy-padding-x still governs both outside edges. */
.service-blocks-v3 .service-blocks-3-copywrap.service-blocks-3-photorightright {padding-right:calc(var(--sbv3-copy-padding-x) + var(--sbv3-copy-image-gap));}
.service-blocks-v3 .service-blocks-3-copywrap.service-blocks-3-photorightleft {padding-left:calc(var(--sbv3-copy-padding-x) + var(--sbv3-copy-image-gap));}
.service-blocks-v3 .service-blocks-3-titlewrap {margin:0 0 16px;}
.service-blocks-v3 .service-blocks-3-title {margin:0;color:var(--sbv3-title-color);font-size:var(--sbv3-title-size);line-height:1.16;}
.service-blocks-v3 .service-blocks-3-title {text-align:left;}
.service-blocks-v3 .service-blocks-3-copywrap p {margin:0 0 1em;}
.service-blocks-v3 .service-blocks-3-copywrap p:last-child {margin-bottom:0;}
.service-blocks-v3 .service-blocks-3-imgmobile {display:none;}
.service-blocks-v3 .service-blocks-3-button {display:inline-block;margin-top:16px;max-width:100%;border-radius:var(--sbv3-button-radius);font-weight:600;font-size:16px;line-height:1.3;text-align:center;overflow:hidden;transition:filter .2s ease,transform .2s ease;}
.service-blocks-v3 .service-blocks-3-buttonwrap {padding:11px 20px;}
.service-blocks-v3 .service-blocks-3-button:hover {filter:brightness(.9);transform:translateY(-2px);}
.service-blocks-v3 .service-blocks-3-copywrap[onclick] {cursor:pointer;}
.service-blocks-v3 .service-blocks-v3__header,.service-blocks-v3 .service-blocks-v3__footer {width:100%;max-width:var(--sbv3-content-width);margin-inline:auto;}
/* Header, footer and alternating block edges use the SAME max width, centered within the pane. */
/* For an explicit narrower width use --sbv3-content-width:1170px; otherwise 100% follows the parent. */
/* Same inner alignment for every alternating row, regardless of image side. */
.service-blocks-v3 .service-blocks-3-1-coltext {justify-content:stretch;}
.service-blocks-v3 .service-blocks-3-copywrap {align-self:center;}
/* Override old site CSS that targets common copy and image elements. */
.service-blocks-v3 .service-blocks-3-1-coltext,.service-blocks-v3 .service-blocks-3-photo {margin:0;}
/* Full-bleed backgrounds stay behind content in both top and bottom panes. */
/* Keep legacy copy-animation choices using native CSS keyframes, no Unify JS. */
.service-blocks-v3 [data-animation*="fadeIn"] {animation:sbv3-fade .8s ease-out both;}
.service-blocks-v3 [data-animation="fadeInUp"] {animation-name:sbv3-fade-up;}
.service-blocks-v3 [data-animation="fadeInDown"] {animation-name:sbv3-fade-down;}
.service-blocks-v3 [data-animation="fadeInLeft"] {animation-name:sbv3-fade-left;}
.service-blocks-v3 [data-animation="fadeInRight"] {animation-name:sbv3-fade-right;}
@keyframes sbv3-fade {from {opacity:0}to {opacity:1}}
@keyframes sbv3-fade-up {from {opacity:0;transform:translateY(18px)}to {opacity:1;transform:none}}
@keyframes sbv3-fade-down {from {opacity:0;transform:translateY(-18px)}to {opacity:1;transform:none}}
@keyframes sbv3-fade-left {from {opacity:0;transform:translateX(-18px)}to {opacity:1;transform:none}}
@keyframes sbv3-fade-right {from {opacity:0;transform:translateX(18px)}to {opacity:1;transform:none}}
@media (max-width:1000px) {
 .service-blocks-v3 .service-blocks-3-inner {display:block;min-height:0;}
 .service-blocks-v3 .service-blocks-3-photo {display:none!important;}
 .service-blocks-v3 .service-blocks-3-1-coltext {display:block;}
 .service-blocks-v3 .service-blocks-3-copywrap {max-width:none;padding:var(--sbv3-mobile-padding) var(--sbv3-mobile-padding-x);}
 .service-blocks-v3 .service-blocks-3-copywrap.service-blocks-3-photorightright,.service-blocks-v3 .service-blocks-3-copywrap.service-blocks-3-photorightleft {padding-right:var(--sbv3-mobile-padding-x);padding-left:var(--sbv3-mobile-padding-x);}
 .service-blocks-v3 .service-blocks-3-imgmobile {display:block;width:100%;height:auto;max-width:100%;margin:0 0 20px;object-fit:var(--sbv3-image-fit);border-radius:var(--sbv3-image-radius);}
}
@media (prefers-reduced-motion:reduce) {.service-blocks-v3 [data-animation*="fadeIn"] {animation:none;}.service-blocks-v3 .service-blocks-3-button {transition:none;transform:none;}}

/* The SuperFlexi module title is rendered OUTSIDE the .service-blocks-v3
   content wrapper by mojoPortal. Constrain that outer title to the same
   1170px site content area when the module is in a full-width pane. */

.service-blocks-v3_module .service-blocks-v3__module-title {
    max-width:none;
    margin-left:0;
    margin-right:0;
}
.service-blocks-v3_module .service-blocks-v3__module-title + .modulelinks {
    display:block;
    width:100%;
    max-width:none;
    margin-left:0;
    margin-right:0;
    box-sizing:border-box;
}

/* Override site rules that add padding to the module title or align it at viewport edge. */
.service-blocks-v3-module .service-blocks-v3__module-title {text-indent:0;left:auto;right:auto;transform:none;}

